The Small Computer System Interface (SCSI) is a standard for connecting and transferring data between computing devices. For example, a conventional use of SCSI is a computer accessing data from disk drives and/or tape drives that are coupled to the computer via SCSI cables.
Another use of SCSI is for a client computer to read from or write to files that are located on storage that is coupled to a networked storage controller device. For example, a server computer that is coupled to a network may be coupled to one or more storage devices. A client computer may connect to the server computer and send commands to the server computer to read and write data.
A conventional transport of SCSI commands over a network may include encapsulating the SCSI commands within another protocol. For example, the SCSI protocol commands may be encapsulated within Fibre Channel and/or TCP/IP protocol. Encapsulating the SCSI command within Fibre Channel and/or TCP/IP packet may be useful, for example, to transport the SCSI command over Fibre Channel and/or TCP/IP networks. SCSI commands may be encapsulated by one or more protocols.
A client computer may include a recovery process to perform error handling corresponding to its SCSI communications. For example, SCSI commands transported over a network may timeout. The recovery process may be configured to identify and respond to the timeout.
Hardware devices have been developed using application-specific integrated circuits that are used to test the recovery process / error handling. Conventionally, these error simulation hardware devices are positioned in-line with the client computer and the server computer in the network, such as between a network switch and client computer, or between a network switch and a server computer. The traditional use of these error simulation hardware devices is to monitor network communications in the network and inject errors into the network communications to simulate error conditions.